;////////////////////////////////////////////////////////////////
; 暗黑3窗口标题
d3_win_title = ahk_class D3 Main Window Class
;////////////////////////////////////////////////////////////////
; 鼠标左键原地攻击标志
stand_attack_flag = 1
;////////////////////////////////////////////////////////////////
buff1_flag = 0
buff2_flag = 0
buff3_flag = 0
buff4_flag = 0
buff_tick_interval = 20
buff_tick_count = 0
buff_class = 0
;////////////////////////////////////////////////////////////////
; 死灵法师（魂法）
NEC_HF = 1
; 圣教军
CRU = 2
; 猎魔人
DH = 3
;////////////////////////////////////////////////////////////////
#SingleInstance
CoordMode, ToolTip | Mouse
SetKeyDelay, 0, 20
Hotkey, ~e, StandAttack, on
SetTimer, buff_tick, %buff_tick_interval%
return
;////////////////////////////////////////////////////////////////
ShowToolTip(msg, interval = 750)
{
	ToolTip, %msg%
	SetTimer, RemoveToolTip, %interval%
}

RemoveToolTip:
	SetTimer, RemoveToolTip, off
	ToolTip
return
;////////////////////////////////////////////////////////////////
; 退出本工具
~F4::
	ExitApp
return
;///////////////////////////////////////////////////////////////
;显示鼠标当前坐标
!m::
	IfWinActive, %d3_win_title%
	{
		mouse_x = 0
		mouse_y = 0
		MouseGetPos, mouse_x, mouse_y
		msg = x = %mouse_x%, y = %mouse_y%
		ShowToolTip(msg)
	}
return
;///////////////////////////////////////////////////////////////
;鼠标左键原地攻击
StandAttack:
	IfWinActive, %d3_win_title%
	{
		if stand_attack_flag = 1
		{
			MouseGetPos, mouse_x, mouse_y
			ControlSend, , {Shift Down}, %d3_win_title%
			ControlClick, X%mouse_x% Y%mouse_y%, %d3_win_title%
			ControlSend, , {Shift Up}, %d3_win_title%
		}
	}
return
;///////////////////////////////////////////////////////////////
;鼠标左键原地攻击开关
!e::
	IfWinActive, %d3_win_title%
	{
		if stand_attack_flag = 0
		{
			stand_attack_flag = 1
			Hotkey, ~e, StandAttack, on
			ShowToolTip("enable e")
		}
		else
		{
			stand_attack_flag = 0
			Hotkey, ~e, StandAttack, off
			ShowToolTip("disable e")
		}
	}
return
;///////////////////////////////////////////////////////////////
; 设定职业
~F3::
	IfWinActive, %d3_win_title%
	{
		if buff_class = 0
		{
			buff_class = NEC_HF
			ShowToolTip("NEC_HF mode")
		}
		else if buff_class = NEC_HF
		{
			buff_class = CRU
			ShowToolTip("CRU mode")
		}
        else if buff_class = CRU
        {
            buff_class = DH
            ShowToolTip("DH mode")
        }
        else if buff_class = DH
        {
            buff_class = 0
            ShowToolTip("Disable")
        }
	}
return
;///////////////////////////////////////////////////////////////
buff_tick_NEC_HF()
{
    global
    active_buff(buff4_flag, buff_tick_count, 1, 4)
}
;///////////////////////////////////////////////////////////////
buff_tick:
    IfWinActive, %d3_win_title%
	{
        buff_tick_count++

        if buff_class = NEC_HF
        {
            buff_tick_NEC_HF()
        }
    }
return
;///////////////////////////////////////////////////////////////
~1::
	IfWinActive, %d3_win_title%
	{
		if buff1_flag = 0
		{
            ShowToolTip("Enable buff 1")
			buff1_flag = 1
		}
		else
		{
            ShowToolTip("Disable buff 1")
			buff1_flag = 0
		}
	}
return

~2::
	IfWinActive, %d3_win_title%
	{
		if buff2_flag = 0
		{
            ShowToolTip("Enable buff 2")
			buff2_flag = 1
		}
		else
		{
            ShowToolTip("Disable buff 3")
			buff2_flag = 0
		}
	}
return

~3::
	IfWinActive, %d3_win_title%
	{
		if buff3_flag = 0
		{
            ShowToolTip("Enable buff 3")
			buff3_flag = 1
		}
		else
		{
            ShowToolTip("Disable buff 3")
			buff3_flag = 0
		}
	}
return

~4::
	IfWinActive, %d3_win_title%
	{
		if buff4_flag = 0
		{
            ShowToolTip("Enable buff 4")
			buff4_flag = 1
		}
		else
		{
            ShowToolTip("Disable buff 4")
			buff4_flag = 0
		}
	}
return
;///////////////////////////////////////////////////////////////
active_buff(flag, tick_count, interval, key)
{
    if !flag
    {
        return
    }
	if tick_count <= 0
	{
        return
    }
    i := Mod(tick_count, interval)
    if i = 0
    {
        ControlSend, , {%key%}, %d3_win_title%
    }
}
